//package com.macro.mall.tiny.service.impl;
//
//import cn.hutool.core.collection.CollUtil;
//import com.macro.mall.tiny.dao.UmsAdminRoleRelationDao;
//import com.macro.mall.tiny.mbg.mapper.UmsAdminRoleRelationMapper;
//import com.macro.mall.tiny.mbg.model.UmsAdmin;
//import com.macro.mall.tiny.mbg.model.UmsAdminRoleRelation;
//import com.macro.mall.tiny.mbg.model.UmsAdminRoleRelationExample;
//import com.macro.mall.tiny.mbg.model.UmsResource;
//import com.macro.mall.tiny.service.RedisService;
//import com.macro.mall.tiny.service.UmsAdminCacheService;
//import com.macro.mall.tiny.service.UmsAdminService;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.Resource;
//import java.util.List;
//import java.util.stream.Collectors;
//
///**
// * 后台用户缓存操作Service实现类
// *
// * @author macro
// * @date 2020/3/13
// */
//@Service
//public class UmsAdminCacheServiceImpl implements UmsAdminCacheService {
//    @Resource
//    private UmsAdminService adminService;
//    @Resource
//    private RedisService redisService;
//    @Resource
//    private UmsAdminRoleRelationMapper adminRoleRelationMapper;
//    @Resource
//    private UmsAdminRoleRelationDao adminRoleRelationDao;
//    @Value("${redis.database}")
//    private String REDIS_DATABASE;
//    @Value("${redis.expire.common}")
//    private Long REDIS_EXPIRE;
//    @Value("${redis.key.admin}")
//    private String REDIS_KEY_ADMIN;
//    @Value("${redis.key.resourceList}")
//    private String REDIS_KEY_RESOURCE_LIST;
//
//
//
//    @Override
//    public void delResourceList(Long adminId) {
//        String key = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":" + adminId;
//        redisService.del(key);
//    }
//
//    @Override
//    public void delResourceListByRole(Long roleId) {
//        UmsAdminRoleRelationExample example = new UmsAdminRoleRelationExample();
//        example.createCriteria().andRoleIdEqualTo(roleId);
//        List<UmsAdminRoleRelation> relationList = adminRoleRelationMapper.selectByExample(example);
//        if (CollUtil.isNotEmpty(relationList)) {
//            String keyPrefix = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":";
//            List<String> keys = relationList.stream().map(relation -> keyPrefix + relation.getAdminId()).collect(Collectors.toList());
//            redisService.del(keys);
//        }
//    }
//
//    @Override
//    public void delResourceListByRoleIds(List<Long> roleIds) {
//        UmsAdminRoleRelationExample example = new UmsAdminRoleRelationExample();
//        example.createCriteria().andRoleIdIn(roleIds);
//        List<UmsAdminRoleRelation> relationList = adminRoleRelationMapper.selectByExample(example);
//        if (CollUtil.isNotEmpty(relationList)) {
//            String keyPrefix = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":";
//            List<String> keys = relationList.stream().map(relation -> keyPrefix + relation.getAdminId()).collect(Collectors.toList());
//            redisService.del(keys);
//        }
//    }
//
//
//
//    @Override
//    public UmsAdmin getAdmin(String username) {
//        String key = REDIS_DATABASE + ":" + REDIS_KEY_ADMIN + ":" + username;
//        return (UmsAdmin) redisService.get(key);
//    }
//
//    @Override
//    public void setAdmin(UmsAdmin admin) {
//        String key = REDIS_DATABASE + ":" + REDIS_KEY_ADMIN + ":" + admin.getUsername();
//        redisService.set(key, admin, REDIS_EXPIRE);
//    }
//
//    @Override
//    public List<UmsResource> getResourceList(Long adminId) {
//        String key = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":" + adminId;
//        return (List<UmsResource>) redisService.get(key);
//    }
//
//    @Override
//    public void setResourceList(Long adminId, List<UmsResource> resourceList) {
//        String key = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":" + adminId;
//        redisService.set(key, resourceList, REDIS_EXPIRE);
//    }
//}
